﻿#pragma once

#include <DirectXMath.h>

namespace ifire::dx {

/// <summary>
/// 球面坐标系
/// </summary>
struct Spherical {
  float theta;
  float phi;
  float radius;

  Spherical() = default;
  Spherical(float _theta, float _phi, float _radius)
      : theta(_theta), phi(_phi), radius(_radius) {}

  // 获得当前球面坐标系的观察矩阵
  DirectX::XMMATRIX GetViewMatrix() const;
  // 获得一个笛卡尔坐标系
  DirectX::XMFLOAT3 GetCartesian() const;
};

} // namespace ifire::dx